今天延續昨天的 nmap ,帶大家實際來認識一些功能。
今天我們拿到一個目標,沒有明講我們該做什麼,那我們該怎麼對症下藥呢?
這時候就要請出我們的 nmap ,看這個目標運行著什麼服務,我們可以去做測試。
nmap <targetIP>
osga@kali:/Users/osga$ nmap 10.129.42.254
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-22 17:31 CST
Nmap scan report for 10.129.42.254
Host is up (0.25s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2323/tcp open 3d-nfsd
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 1.46 seconds
在這個例子中我們可以看到 nmap 給我們了幾項資訊,像是目前開設了哪些 PORT ,他們是什麼服務,狀態如何等...
在這邊就能看到幾個眼熟的服務,像是 ssh、ftp、http 之類的..
基本的 nmap <targetIP>
只會掃描常用的 1000 個端口,但實際上我們可以做得更深入:
nmap -p- <targetIP>
這會掃描所有 65535 個端口,雖然耗時較長,但能發現隱藏在非標準端口上的服務。
nmap -sV <targetIP>
加上 -sV
參數後,nmap 會嘗試識別每個開放端口上運行的具體服務版本,這對後續的漏洞分析非常重要。
nmap -O <targetIP>
透過分析網路封包的特徵,nmap 可以猜測目標系統的作業系統類型和版本。
nmap --script vuln <targetIP>
nmap 內建了數百個 NSE (Nmap Scripting Engine) 腳本,可以自動檢測常見的漏洞。
在實際的滲透測試中,我們通常會組合多個參數來獲得最完整的資訊:
nmap -sS -sV -O -A --script vuln -p- <targetIP>
讓我們分解這個指令:
-sS
: TCP SYN 掃描(隱密掃描)-sV
: 版本檢測-O
: 作業系統檢測-A
: 啟用作業系統檢測、版本檢測、腳本掃描和路由追蹤--script vuln
: 執行漏洞檢測腳本-p-
: 掃描所有端口拿到掃描結果後,我們應該按照以下優先級進行分析:
nmap -sS -T2 --randomize-hosts <targetIP>
使用較慢的掃描速度和隨機化主機順序,降低被 IDS/IPS 檢測的機率。
nmap -oA scan_results <targetIP>
-oA
會同時輸出三種格式的結果文件,方便後續分析和報告撰寫。
參數 | 功能 |
---|---|
-sS |
TCP SYN 掃描(預設) |
-sU |
UDP 掃描 |
-sV |
版本檢測 |
-O |
作業系統檢測 |
-A |
全面掃描(包含 -O -sV --script default --traceroute) |
-p- |
掃描所有 65535 個端口 |
-p 1-100 |
掃描指定端口範圍 |
-T0-5 |
設定掃描時間模板(0最慢,5最快) |
--script <script> |
執行特定腳本 |
-oA <filename> |
輸出所有格式的結果 |
nmap 最強大的功能之一就是它的腳本引擎。以下是一些常用的腳本類別:
# 檢測所有已知漏洞
nmap --script vuln <targetIP>
# 檢測特定漏洞(如 Heartbleed)
nmap --script ssl-heartbleed <targetIP>
# 檢測 SMB 漏洞
nmap --script smb-vuln* <targetIP>
# HTTP 服務枚舉
nmap --script http-enum <targetIP>
# SSH 服務資訊收集
nmap --script ssh2-enum-algos <targetIP>
# FTP 匿名登入檢測
nmap --script ftp-anon <targetIP>